// 1. 导包
const mysql = require('mysql');
// 2. 初始化 mysql 连接
/**
 * 使用MySQL连接池的方式来优化对数据库的操作
 * 因为普通的方式在频繁的连接和断开mysql都是比较消耗资源
 * 解决这个问题就需要采用连接池的方式
 * 创建一个连接池，复用连接池中的连接，提高效率
 */
// 建立连接池
const pool = mysql.createPool({
  // connectionLimit: 10,// 默认是10 连接数量
  host: '127.0.0.1',
  port: 3306,
  user: 'root',
  password: '123456',
  database: 'hs_cms_db',
  charset: 'utf8'
});

// 3. 初始化 sql 任务（异步) 核心代码
function query(sql, values){
  return new Promise((resolve, reject) => {
    // 数据库的异步操作任务 就是执行数据库的SQL语句
    pool.getConnection((err, connection) => {
      if(err){
        reject(err);
      } else { // 数据库正常操作
        connection.query(sql, values, (err, rows) => {
          if (err) {
            reject(err);
          } else {
            resolve(rows);
          }
          // 连接用完之后，需要释放，重新放回到连接池中
          // 注意这里并不是销毁，该连接还能用，但是需要重新获取
          connection.release();
        });
      }
    });
  });
}

// 4. 根据需求封住出对应的功能函数
// 4.1 查询功能
async function findALLData(tableName) {
  let sql = `select * from ${tableName}`;
  let result = await query(sql);
  return result;
}



// 5. 开放API接口
module.exports = {
  findALLData
}

